Feature and classification vectors

Joining, by = "property"

Outer products


Call:
lm(formula = mean ~ mode_1 + mode_2 + mode_3 + mode_4 + mode_5 + 
    mode_6, data = d_reg)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.45854 -0.11041 -0.00305  0.11604  0.70238 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)  1.066e-17  1.328e-02   0.000 1.000000    
mode_1       1.015e+00  1.782e-01   5.692 5.27e-08 ***
mode_2       6.187e-01  1.782e-01   3.471 0.000654 ***
mode_3       2.375e-02  1.782e-01   0.133 0.894153    
mode_4      -2.688e-01  1.782e-01  -1.508 0.133315    
mode_5       1.476e-01  1.782e-01   0.828 0.408630    
mode_6      -2.129e-01  1.782e-01  -1.194 0.233979    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.1782 on 173 degrees of freedom
Multiple R-squared:  0.2202,    Adjusted R-squared:  0.1932 
F-statistic: 8.143 on 6 and 173 DF,  p-value: 9.206e-08
Analysis of Variance Table

Model 1: mean ~ mode_1
Model 2: mean ~ mode_1 + mode_2
Model 3: mean ~ mode_1 + mode_2 + mode_3
Model 4: mean ~ mode_1 + mode_2 + mode_3 + mode_4
Model 5: mean ~ mode_1 + mode_2 + mode_3 + mode_4 + mode_5
Model 6: mean ~ mode_1 + mode_2 + mode_3 + mode_4 + mode_5 + mode_6
  Res.Df    RSS Df Sum of Sq       F    Pr(>F)    
1    178 6.0186                                   
2    177 5.6357  1   0.38283 12.0509 0.0006538 ***
3    176 5.6352  1   0.00056  0.0178 0.8941526    
4    175 5.5629  1   0.07227  2.2748 0.1333145    
5    174 5.5411  1   0.02180  0.6861 0.4086299    
6    173 5.4958  1   0.04531  1.4265 0.2339788    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
parameter SV beta beta_se beta_t beta_p signif
mode_1 1.789 1.015 0.178 5.692 0.000 ***
mode_2 1.530 0.619 0.178 3.471 0.001 ***
mode_3 0.930 0.024 0.178 0.133 0.894 n.s.
mode_4 0.468 -0.269 0.178 -1.508 0.133 n.s.
mode_5 0.351 0.148 0.178 0.828 0.409 n.s.
mode_6 0.327 -0.213 0.178 -1.194 0.234 n.s.

Plotting properties in 2D spaces

Joining, by = "property"

Joining, by = "property"

Joining, by = "property"

Plotting items in 2D spaces

LS0tCnRpdGxlOiAiRXhwbG9yYXRpb24gd2l0aCBTVkQiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyLCBpbmNsdWRlID0gRn0KIyBGT1IgT0xERVIgS0lEUwojIGZpcnN0IHJ1biBjb2dzY2kyMDE4X2RpbWtpZC5SbWQKIyBnZXQgbWVhbnMgYnkgY2hhcmFjdGVyIGJ5IGNhcGFjaXR5IGZvciBvbGQgY29ob3J0CmRfNzlfbWVhbiA8LSBkX29sZCAlPiUKICBncm91cF9ieShjaGFyYWN0ZXIsIGNhcGFjaXR5KSAlPiUKICBzdW1tYXJpc2UobWVhbiA9IG1lYW4ocmVzcG9uc2VOdW0pKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgZ3JvdXBfYnkoY2hhcmFjdGVyKSAlPiUKICBtdXRhdGUoY2FwX21lYW4gPSBtZWFuKG1lYW4pLAogICAgICAgICBtZWFuX2NlbnQgPSBtZWFuIC0gY2FwX21lYW4pICU+JQogIHVuZ3JvdXAoKSAlPiUKICBzZWxlY3QoY2hhcmFjdGVyLCBjYXBhY2l0eSwgbWVhbl9jZW50KSAlPiUKICBzcHJlYWQoY2hhcmFjdGVyLCBtZWFuX2NlbnQpICU+JQogIHJlbW92ZV9yb3duYW1lcygpICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICBjb2x1bW5fdG9fcm93bmFtZXMoImNhcGFjaXR5IikKCiMgRk9SIEFEVUxUUyAoUE5BUyBTVFVEWSA0KQojIC4uLiBvcmllbnRlZCBsaWtlIFNheGUgZXQgYWwuCiMgZF9hZHVsdF9tZWFuIDwtIHJlYWQuY3N2KCJodHRwczovL29zZi5pby9rZHpnZS9kb3dubG9hZCIpICU+JQojICAgc2VsZWN0KHN1YmlkLCBjb25kaXRpb24sIGhhcHB5OnByaWRlKSAlPiUKIyAgIGdhdGhlcihjYXBhY2l0eSwgcmVzcG9uc2UsIC1zdWJpZCwgLWNvbmRpdGlvbikgJT4lCiMgICBncm91cF9ieShjb25kaXRpb24sIGNhcGFjaXR5KSAlPiUKIyAgIHN1bW1hcmlzZShtZWFuID0gbWVhbihyZXNwb25zZSwgbmEucm0gPSBUKSkgJT4lCiMgICB1bmdyb3VwKCkgJT4lCiMgICBncm91cF9ieShjb25kaXRpb24pICU+JQojICAgbXV0YXRlKGNhcF9tZWFuID0gbWVhbihtZWFuKSwKIyAgICAgICAgICBtZWFuX2NlbnQgPSBtZWFuIC0gY2FwX21lYW4pICU+JQojICAgdW5ncm91cCgpICU+JQojICAgc2VsZWN0KGNvbmRpdGlvbiwgY2FwYWNpdHksIG1lYW5fY2VudCkgJT4lCiMgICBzcHJlYWQoY29uZGl0aW9uLCBtZWFuX2NlbnQpICU+JQojICAgcmVtb3ZlX3Jvd25hbWVzKCkgJT4lCiMgICBkYXRhLmZyYW1lKCkgJT4lCiMgICBjb2x1bW5fdG9fcm93bmFtZXMoImNhcGFjaXR5IikKCiMgLi4uIG9yaWVudGVkIGxpa2UgSmF5CiMgZF9hZHVsdF9tZWFuIDwtIHJlYWQuY3N2KCJodHRwczovL29zZi5pby9rZHpnZS9kb3dubG9hZCIpICU+JQojICAgc2VsZWN0KHN1YmlkLCBjb25kaXRpb24sIGhhcHB5OnByaWRlKSAlPiUKIyAgIGdhdGhlcihjYXBhY2l0eSwgcmVzcG9uc2UsIC1zdWJpZCwgLWNvbmRpdGlvbikgJT4lCiMgICBncm91cF9ieShjb25kaXRpb24sIGNhcGFjaXR5KSAlPiUKIyAgIHN1bW1hcmlzZShtZWFuID0gbWVhbihyZXNwb25zZSwgbmEucm0gPSBUKSkgJT4lCiMgICB1bmdyb3VwKCkgJT4lCiMgICBncm91cF9ieShjYXBhY2l0eSkgJT4lCiMgICBtdXRhdGUoY29uZF9tZWFuID0gbWVhbihtZWFuKSwKIyAgICAgICAgICBtZWFuX2NlbnQgPSBtZWFuIC0gY29uZF9tZWFuKSAlPiUKIyAgIHVuZ3JvdXAoKSAlPiUKIyAgIHNlbGVjdChjb25kaXRpb24sIGNhcGFjaXR5LCBtZWFuX2NlbnQpICU+JQojICAgc3ByZWFkKGNhcGFjaXR5LCBtZWFuX2NlbnQpICU+JQojICAgcmVtb3ZlX3Jvd25hbWVzKCkgJT4lCiMgICBkYXRhLmZyYW1lKCkgJT4lCiMgICBjb2x1bW5fdG9fcm93bmFtZXMoImNvbmRpdGlvbiIpCgojIHNldCBiYXNlCmRfYmFzZV9tZWFuIDwtIGRfNzlfbWVhbgojIGRfYmFzZV9tZWFuIDwtIGRfYWR1bHRfbWVhbgoKIyBjaGVjayB6ZXJvLWNlbnRlcmluZwptYXgoYWJzKGNvbE1lYW5zKGRfYmFzZV9tZWFuKSkpCm1heChhYnMocm93TWVhbnMoZF9iYXNlX21lYW4pKSkKCiMgc2V0IHNjYWxlIGxpbWl0cwpzY2FsZV9saW0gPC0gYyhtaW4oZF9iYXNlX21lYW4pICsgMC4yNSwgbWF4KGRfYmFzZV9tZWFuKSArIDAuMjUpCgojIGdldCBpdGVtIGFuZCBwcm9wZXJ0eSBuYW1lcwppdGVtX25hbWVzIDwtIG5hbWVzKGRfYmFzZV9tZWFuKQpwcm9wZXJ0eV9uYW1lcyA8LSByb3duYW1lcyhkX2Jhc2VfbWVhbikKCiMgZG8gZWZhCmVmYV9mYWN0b3JzIDwtIGRhdGEuZnJhbWUocHJvcGVydHkgPSBwcm9wZXJ0eV9uYW1lcykgJT4lCiAgbXV0YXRlKGZhY3RvciA9CiAgICAgICAgICAgaWZlbHNlKHByb3BlcnR5ICVpbiUgYygiaHVuZ2VyIiwgImh1bmdyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFpbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmF0aWd1ZSIsICJ0aXJlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmVhciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGxlYXN1cmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWVfd2lsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29uc2Npb3VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzYWZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNpcmVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYXVzZWEiLCAibmF1c2VhdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmdlciIsICJhbmdyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZW50aW9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXdhcmVuZXNzIiwgInNlbGZfYXdhcmUiKSwKICAgICAgICAgICAgICAgICAgIkJPRFkiLAogICAgICAgICAgICAgICAgICBpZmVsc2UocHJvcGVydHkgJWluJSBjKCJlbWJhcnJhc3NtZW50IiwgImVtYmFycmFzc2VkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb3ZlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3VpbHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWxpZWZzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHVydF9mZWVsaW5ncyIsICJkaXNyZXNwZWN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzYWRuZXNzIiwgImRlcHJlc3NlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVtb19yZWNvZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImpveSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcnNvbmFsaXR5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFwcGluZXNzIiwgImhhcHB5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9yYWxpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmX3Jlc3RyYWludCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRob3VnaHRzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAiSEVBUlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHByb3BlcnR5ICVpbiUgYygibWVtb3J5IiwgInJlbWVtYmVyaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlY29nbml6aW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlbXBlcmF0dXJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW11bmljYXRpbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VlaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcHRoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdW5kcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnb2FsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNob2ljZSIsICJjaG9pY2VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpZ3VyaW5nX291dCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFzb25pbmciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic21lbGwiLCAib2RvcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcHV0YXRpb25zIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BKSkpKQoKIyBlZmFfZmFjdG9ycyA8LSBkYXRhLmZyYW1lKGl0ZW0gPSBpdGVtX25hbWVzKSAlPiUKIyAgIG11dGF0ZShmYWN0b3IgPQojICAgICAgICAgICAgaWZlbHNlKGl0ZW0gJWluJSBjKCJodW5nZXIiLCAiaHVuZ3J5IiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhaW4iLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmF0aWd1ZSIsICJ0aXJlZCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmZWFyIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBsZWFzdXJlIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWVfd2lsbCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25zY2lvdXMiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2FmZSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNpcmVzIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hdXNlYSIsICJuYXVzZWF0ZWQiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmdlciIsICJhbmdyeSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlbnRpb25zIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF3YXJlbmVzcyIsICJzZWxmX2F3YXJlIiksCiMgICAgICAgICAgICAgICAgICAgIkJPRFkiLAojICAgICAgICAgICAgICAgICAgIGlmZWxzZShpdGVtICVpbiUgYygiZW1iYXJyYXNzbWVudCIsICJlbWJhcnJhc3NlZCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpZGUiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvdmUiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImd1aWx0IiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWxpZWZzIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodXJ0X2ZlZWxpbmdzIiwgImRpc3Jlc3BlY3RlZCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2FkbmVzcyIsICJkZXByZXNzZWQiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVtb19yZWNvZyIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiam95IiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJzb25hbGl0eSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFwcGluZXNzIiwgImhhcHB5IiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb3JhbGl0eSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZl9yZXN0cmFpbnQiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRob3VnaHRzIiksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShpdGVtICVpbiUgYygibWVtb3J5IiwgInJlbWVtYmVyaW5nIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVjb2duaXppbmciLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZW1wZXJhdHVyZSIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW11bmljYXRpbmciLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWVpbmciLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXB0aCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdW5kcyIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdvYWwiLAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaG9pY2UiLCAiY2hvaWNlcyIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpZ3VyaW5nX291dCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYXNvbmluZyIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNtZWxsIiwgIm9kb3JzIiwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcHV0YXRpb25zIiksCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCIsCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSkKCiMgZWZhX2ZhY3RvcnMgPC0gcHN5Y2g6OmZhKHQoZF9iYXNlX21lYW4pLCAzLCByb3RhdGUgPSAidmFyaW1heCIpJGxvYWRpbmdzW10gJT4lCiMgICBkYXRhLmZyYW1lKCkgJT4lCiMgICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiMgICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtcHJvcGVydHkpICU+JQojICAgZ3JvdXBfYnkocHJvcGVydHkpICU+JQojICAgdG9wX24oMSwgYWJzKGxvYWRpbmcpKSAlPiUKIyAgIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLCAKIyAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiTVIzIiwgIk1SMSIsICJNUjIiKSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIikpKQpgYGAKCiMgRmVhdHVyZSBhbmQgY2xhc3NpZmljYXRpb24gdmVjdG9ycwoKYGBge3IsIGluY2x1ZGUgPSBGfQojIGRvIHN2ZCBmb3Igb2xkIGNvaG9ydCAoZ2V0IE4gbW9kZXMpCnN2ZF9iYXNlIDwtIHN2ZChkX2Jhc2VfbWVhbiwgNiwgNikKIyBzdmRfYmFzZSA8LSBzdmQoZF9iYXNlX21lYW4sIDQsIDQpCiMgc3ZkX2Jhc2UgPC0gc3ZkKGRfYmFzZV9tZWFuLCA2LCAyKQp1X29sZCA8LSBzdmRfYmFzZSR1CnNfb2xkIDwtIHN2ZF9iYXNlJGQKdl9vbGQgPC0gc3ZkX2Jhc2UkdgpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC44fQojIHZpc3VhbGl6ZSBmZWF0dXJlIHZlY3RvcnMgKHUpCmdncGxvdChkYXRhLmZyYW1lKHVfb2xkKSAlPiUKICAgICAgICAgbXV0YXRlKFgxID0gWDEgKiBzX29sZFsxXSwKICAgICAgICAgICAgICAgIFgyID0gWDIgKiBzX29sZFsyXSwKICAgICAgICAgICAgICAgIFgzID0gWDMgKiBzX29sZFszXSwKICAgICAgICAgICAgICAgIFg0ID0gWDQgKiBzX29sZFs0XSwKICAgICAgICAgICAgICAgIFg1ID0gWDUgKiBzX29sZFs1XSwKICAgICAgICAgICAgICAgIFg2ID0gWDYgKiBzX29sZFs2XSkgJT4lCiAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKICAgICAgICAgYXJyYW5nZShkZXNjKGFicyhYMSkpLCBkZXNjKGFicyhYMikpLCAKICAgICAgICAgICAgICAgICBkZXNjKGFicyhYMykpLCBkZXNjKGFicyhYNCkpKSAlPiUKICAgICAgICAgbXV0YXRlKG9yZGVyID0gMTpucm93KC4pKSAlPiUKICAgICAgICAgZ2F0aGVyKG1vZGUsIHZhbHVlLCAtcHJvcGVydHksIC1vcmRlcikgJT4lCiAgICAgICAgIG11dGF0ZShtb2RlID0gZ3N1YigiWCIsICIiLCBtb2RlKSkgJT4lCiAgICAgICAgIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBtb2RlKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgICAgICAgIG11dGF0ZShtb2RlID0gZmFjdG9yKG1vZGUsIGxhYmVscyA9IGMoIm1vZGVfMSIsICJtb2RlXzIiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV8zIiwgIm1vZGVfNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfNSIsICJtb2RlXzYiKSksCiAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSwKICAgICAgIGFlcyh4ID0gbW9kZSwgeSA9IHJlb3JkZXIocHJvcGVydHksIGRlc2Mob3JkZXIpKSwKICAgICAgICAgICBmaWxsID0gdmFsdWUpKSArIAogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKHZhbHVlLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gMykgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHR5cGUgPSAiZGl2IiwgcGFsZXR0ZSA9ICJSZEJ1IikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgbGFicyh0aXRsZSA9ICJVICogUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAibW9kZSIsCiAgICAgICB5ID0gInByb3BlcnR5IikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNiwgZmlnLmFzcCA9IDIuNX0KIyBhbHRlcm5hdGl2ZSB2aXN1YWxpemF0aW9uIG9mIGZlYXR1cmUgdmVjdG9ycyAodSkKZGF0YS5mcmFtZSh1X29sZCkgJT4lCiAgbXV0YXRlKFgxID0gWDEgKiBzX29sZFsxXSwKICAgICAgICAgWDIgPSBYMiAqIHNfb2xkWzJdLAogICAgICAgICBYMyA9IFgzICogc19vbGRbM10sCiAgICAgICAgIFg0ID0gWDQgKiBzX29sZFs0XSwKICAgICAgICAgWDUgPSBYNSAqIHNfb2xkWzVdLAogICAgICAgICBYNiA9IFg2ICogc19vbGRbNl0pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKICBhcnJhbmdlKGRlc2MoYWJzKFgxKSksIGRlc2MoYWJzKFgyKSksIAogICAgICAgICAgZGVzYyhhYnMoWDMpKSwgZGVzYyhhYnMoWDQpKSwKICAgICAgICAgIGRlc2MoYWJzKFg1KSksIGRlc2MoYWJzKFg2KSkpICU+JQogIG11dGF0ZShvcmRlciA9IDE6bnJvdyguKSkgJT4lCiAgZ2F0aGVyKG1vZGUsIHZhbHVlLCAtcHJvcGVydHksIC1vcmRlcikgJT4lCiAgbXV0YXRlKG1vZGUgPSBnc3ViKCJYIiwgIiIsIG1vZGUpKSAlPiUKICBtdXRhdGVfYXQodmFycyhwcm9wZXJ0eSwgbW9kZSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQogIG11dGF0ZShtb2RlID0gZmFjdG9yKG1vZGUsIGxhYmVscyA9IGMoIm1vZGVfMSIsICJtb2RlXzIiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlXzMiLCAibW9kZV80IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlXzUiLCAibW9kZV82IikpLAogICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSAlPiUKICBmdWxsX2pvaW4oZWZhX2ZhY3RvcnMgJT4lIHNlbGVjdChwcm9wZXJ0eSwgZmFjdG9yKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZSwgeSA9IHZhbHVlLCBsYWJlbCA9IHByb3BlcnR5LCBjb2xvciA9IGZhY3RvcikpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBsdHkgPSAyKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZ3JlcGVsOjpnZW9tX3RleHRfcmVwZWwoc2l6ZSA9IDMsIHNlZ21lbnQuc2l6ZSA9IDAuMSkgKyAjLCBkaXJlY3Rpb24gPSAieCIpICsKICAjIGdlb21fdGV4dChzaXplID0gMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9udWRnZSh4ID0gMC4wNiksIGhqdXN0ID0gMCkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBsYWJzKHRpdGxlID0gIlUgKiBTOiBGZWF0dXJlIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICJtb2RlIiwKICAgICAgIHkgPSAiVS12ZWN0b3IgdmFsdWUgKiBzaW5ndWxhciB2YWx1ZSIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjZ9CiMgdmlzdWFsaXplIGNsYXNzaWZpZXIgdmVjdG9ycyAodikKZ2dwbG90KGRhdGEuZnJhbWUodl9vbGQpICU+JQogICAgICAgICBtdXRhdGUoWDEgPSBYMSAqIHNfb2xkWzFdLAogICAgICAgICAgICAgICAgWDIgPSBYMiAqIHNfb2xkWzJdLAogICAgICAgICAgICAgICAgWDMgPSBYMyAqIHNfb2xkWzNdLAogICAgICAgICAgICAgICAgWDQgPSBYNCAqIHNfb2xkWzRdLAogICAgICAgICAgICAgICAgWDUgPSBYNSAqIHNfb2xkWzVdLAogICAgICAgICAgICAgICAgWDYgPSBYNiAqIHNfb2xkWzZdKSAlPiUKICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJpdGVtIikgJT4lCiAgICAgICAgIGFycmFuZ2UoZGVzYyhhYnMoWDEpKSwgZGVzYyhhYnMoWDIpKSwgCiAgICAgICAgICAgICAgICAgZGVzYyhhYnMoWDMpKSwgZGVzYyhhYnMoWDQpKSwKICAgICAgICAgICAgICAgICBkZXNjKGFicyhYNSkpLCBkZXNjKGFicyhYNikpKSAlPiUKICAgICAgICAgbXV0YXRlKG9yZGVyID0gMTpucm93KC4pKSAlPiUKICAgICAgICAgZ2F0aGVyKG1vZGUsIHZhbHVlLCAtaXRlbSwgLW9yZGVyKSAlPiUKICAgICAgICAgbXV0YXRlKG1vZGUgPSBnc3ViKCJYIiwgIiIsIG1vZGUpKSAlPiUKICAgICAgICAgbXV0YXRlX2F0KHZhcnMoaXRlbSwgbW9kZSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQogICAgICAgICBtdXRhdGUobW9kZSA9IGZhY3Rvcihtb2RlLCBsYWJlbHMgPSBjKCJtb2RlXzEiLCAibW9kZV8yIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfMyIsICJtb2RlXzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlXzUiLCAibW9kZV82IikpLAogICAgICAgICAgICAgICAgaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSksCiAgICAgICBhZXMoeCA9IG1vZGUsIHkgPSByZW9yZGVyKGl0ZW0sIGRlc2Mob3JkZXIpKSwKICAgICAgICAgICBmaWxsID0gdmFsdWUpKSArIAogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKHZhbHVlLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gMykgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHR5cGUgPSAiZGl2IiwgcGFsZXR0ZSA9ICJSZEJ1IikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgbGFicyh0aXRsZSA9ICJWICogUzogQ2xhc3NpZmljYXRpb24gdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIm1vZGUiLAogICAgICAgeSA9ICJpdGVtIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNiwgZmlnLmFzcCA9IDF9CiMgYWx0ZXJuYXRpdmUgdmlzdWFsaXphdGlvbiBvZiBmZWF0dXJlIHZlY3RvcnMgKHUpCmRhdGEuZnJhbWUodl9vbGQpICU+JQogIG11dGF0ZShYMSA9IFgxICogc19vbGRbMV0sCiAgICAgICAgIFgyID0gWDIgKiBzX29sZFsyXSwKICAgICAgICAgWDMgPSBYMyAqIHNfb2xkWzNdLAogICAgICAgICBYNCA9IFg0ICogc19vbGRbNF0sCiAgICAgICAgIFg1ID0gWDUgKiBzX29sZFs1XSwKICAgICAgICAgWDYgPSBYNiAqIHNfb2xkWzZdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oIml0ZW0iKSAlPiUKICBhcnJhbmdlKGRlc2MoYWJzKFgxKSksIGRlc2MoYWJzKFgyKSksCiAgICAgICAgICBkZXNjKGFicyhYMykpLCBkZXNjKGFicyhYNCkpLAogICAgICAgICAgZGVzYyhhYnMoWDUpKSwgZGVzYyhhYnMoWDYpKSkgJT4lCiAgbXV0YXRlKG9yZGVyID0gMTpucm93KC4pKSAlPiUKICBnYXRoZXIobW9kZSwgdmFsdWUsIC1pdGVtLCAtb3JkZXIpICU+JQogIG11dGF0ZShtb2RlID0gZ3N1YigiWCIsICIiLCBtb2RlKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMoaXRlbSwgbW9kZSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQogIG11dGF0ZShtb2RlID0gZmFjdG9yKG1vZGUsIGxhYmVscyA9IGMoIm1vZGVfMSIsICJtb2RlXzIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfMyIsICJtb2RlXzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfNSIsICJtb2RlXzYiKSksCiAgICAgICAgIGl0ZW0gPSBmYWN0b3IoaXRlbSwgbGFiZWxzID0gaXRlbV9uYW1lcykpICU+JQogICMgZnVsbF9qb2luKGVmYV9mYWN0b3JzICU+JSBzZWxlY3QoaXRlbSwgZmFjdG9yKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZSwgeSA9IHZhbHVlLCBsYWJlbCA9IGl0ZW0pKSArICMgLCBjb2xvciA9IGZhY3RvcikpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBsdHkgPSAyKSArCiAgZ2VvbV9wb2ludCgpICsKICBnZ3JlcGVsOjpnZW9tX3RleHRfcmVwZWwoc2l6ZSA9IDMsIHNlZ21lbnQuc2l6ZSA9IDAuMSkgKyAjLCBkaXJlY3Rpb24gPSAieCIpICsKICAjIGdlb21fdGV4dChzaXplID0gMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9udWRnZSh4ID0gMC4wNiksIGhqdXN0ID0gMCkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBsYWJzKHRpdGxlID0gIlYgKiBTOiBGZWF0dXJlIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICJtb2RlIiwKICAgICAgIHkgPSAiVi12ZWN0b3IgdmFsdWUgKiBzaW5ndWxhciB2YWx1ZSIpCmBgYAoKIyBPdXRlciBwcm9kdWN0cwoKYGBge3J9CiMgT1VURVIgUFJPRFVDVFMgKiBTSU5HVUxBUiBWQUxVRSAtLS0tLQojIGNhbGN1bGF0ZSBvdXRlciBwcm9kdWN0cywgbXVsdGlwbHkgYnkgc2luZ3VsYXIgdmFsdWUKbV9kMSA8LSBvdXRlcih1X29sZFssMV0sIHZfb2xkWywxXSkgKiBzX29sZFsxXQptX2QyIDwtIG91dGVyKHVfb2xkWywyXSwgdl9vbGRbLDJdKSAqIHNfb2xkWzJdCm1fZDMgPC0gb3V0ZXIodV9vbGRbLDNdLCB2X29sZFssM10pICogc19vbGRbM10KbV9kNCA8LSBvdXRlcih1X29sZFssNF0sIHZfb2xkWyw0XSkgKiBzX29sZFs0XQptX2Q1IDwtIG91dGVyKHVfb2xkWyw1XSwgdl9vbGRbLDVdKSAqIHNfb2xkWzVdCm1fZDYgPC0gb3V0ZXIodV9vbGRbLDZdLCB2X29sZFssNl0pICogc19vbGRbNl0KCiMgYWRkIHRvZ2V0aGVyCm1fc3VtIDwtIG1fZDEgKyBtX2QyICsgbV9kMyArIG1fZDQgKyBtX2Q1ICsgbV9kNgptX2RpZmYgPC0gYXMubWF0cml4KGRfYmFzZV9tZWFuKSAtIG1fc3VtCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDgsIGZpZy5hc3AgPSAyfQojIGdncGxvdChkYXRhLmZyYW1lKG1fZDEpICU+JQojICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKIyAgICAgICAgICBnYXRoZXIoaXRlbSwgdmFsdWUsIC1wcm9wZXJ0eSkgJT4lCiMgICAgICAgICAgbXV0YXRlKGl0ZW0gPSBnc3ViKCJYIiwgIiIsIGl0ZW0pKSAlPiUKIyAgICAgICAgICBtdXRhdGVfYXQodmFycyhwcm9wZXJ0eSwgaXRlbSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQojICAgICAgICAgIG11dGF0ZShpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IGl0ZW1fbmFtZXMpLAojICAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSwKIyAgICAgICAgYWVzKHggPSBpdGVtLCB5ID0gcHJvcGVydHksCiMgICAgICAgICAgICAjIHggPSByZW9yZGVyKGl0ZW0sIHZhbHVlKSwgeSA9IHJlb3JkZXIocHJvcGVydHksIHZhbHVlKSwgCiMgICAgICAgICAgICBmaWxsID0gdmFsdWUpKSArIAojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZCh2YWx1ZSwgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDMpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHR5cGUgPSAiZGl2IiwgCiMgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBzY2FsZV9saW0sCiMgICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gIlBSR24iKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkgKwojICAgbGFicyh0aXRsZSA9ICJNb2RlIDE6IG91dGVyIHByb2R1Y3QgKiBzaW5ndWxhciB2YWx1ZSBtYXRyaXgiLAojICAgICAgICB4ID0gIml0ZW0iLAojICAgICAgICB5ID0gInByb3BlcnR5IikKIyAKIyBnZ3Bsb3QoZGF0YS5mcmFtZShtX2QyKSAlPiUKIyAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiMgICAgICAgICAgZ2F0aGVyKGl0ZW0sIHZhbHVlLCAtcHJvcGVydHkpICU+JQojICAgICAgICAgIG11dGF0ZShpdGVtID0gZ3N1YigiWCIsICIiLCBpdGVtKSkgJT4lCiMgICAgICAgICAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIGl0ZW0pLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKIyAgICAgICAgICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKIyAgICAgICAgICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSksCiMgICAgICAgIGFlcyh4ID0gaXRlbSwgeSA9IHByb3BlcnR5LAojICAgICAgICAgICMgeCA9IHJlb3JkZXIoaXRlbSwgdmFsdWUpLCB5ID0gcmVvcmRlcihwcm9wZXJ0eSwgdmFsdWUpLCAKIyAgICAgICAgICBmaWxsID0gdmFsdWUpKSArIAojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZCh2YWx1ZSwgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDMpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHR5cGUgPSAiZGl2IiwgCiMgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBzY2FsZV9saW0sCiMgICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gIlBSR24iKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkgKwojICAgbGFicyh0aXRsZSA9ICJNb2RlIDI6IG91dGVyIHByb2R1Y3QgKiBzaW5ndWxhciB2YWx1ZSBtYXRyaXgiLAojICAgICAgICB4ID0gIml0ZW0iLAojICAgICAgICB5ID0gInByb3BlcnR5IikKIyAKIyBnZ3Bsb3QoZGF0YS5mcmFtZShtX2QzKSAlPiUKIyAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiMgICAgICAgICAgZ2F0aGVyKGl0ZW0sIHZhbHVlLCAtcHJvcGVydHkpICU+JQojICAgICAgICAgIG11dGF0ZShpdGVtID0gZ3N1YigiWCIsICIiLCBpdGVtKSkgJT4lCiMgICAgICAgICAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIGl0ZW0pLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKIyAgICAgICAgICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKIyAgICAgICAgICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSksCiMgICAgICAgIGFlcyh4ID0gaXRlbSwgeSA9IHByb3BlcnR5LAojICAgICAgICAgICMgeCA9IHJlb3JkZXIoaXRlbSwgdmFsdWUpLCB5ID0gcmVvcmRlcihwcm9wZXJ0eSwgdmFsdWUpLCAKIyAgICAgICAgICBmaWxsID0gdmFsdWUpKSArIAojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZCh2YWx1ZSwgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDMpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHR5cGUgPSAiZGl2IiwgCiMgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBzY2FsZV9saW0sCiMgICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gIlBSR24iKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkgKwojICAgbGFicyh0aXRsZSA9ICJNb2RlIDM6IG91dGVyIHByb2R1Y3QgKiBzaW5ndWxhciB2YWx1ZSBtYXRyaXgiLAojICAgICAgICB4ID0gIml0ZW0iLAojICAgICAgICB5ID0gInByb3BlcnR5IikKIyAKIyBnZ3Bsb3QoZGF0YS5mcmFtZShtX2Q0KSAlPiUKIyAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiMgICAgICAgICAgZ2F0aGVyKGl0ZW0sIHZhbHVlLCAtcHJvcGVydHkpICU+JQojICAgICAgICAgIG11dGF0ZShpdGVtID0gZ3N1YigiWCIsICIiLCBpdGVtKSkgJT4lCiMgICAgICAgICAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIGl0ZW0pLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKIyAgICAgICAgICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKIyAgICAgICAgICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSksCiMgICAgICAgIGFlcyh4ID0gaXRlbSwgeSA9IHByb3BlcnR5LAojICAgICAgICAgICMgeCA9IHJlb3JkZXIoaXRlbSwgdmFsdWUpLCB5ID0gcmVvcmRlcihwcm9wZXJ0eSwgdmFsdWUpLCAKIyAgICAgICAgICBmaWxsID0gdmFsdWUpKSArIAojICAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwojICAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZCh2YWx1ZSwgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDMpICsKIyAgIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHR5cGUgPSAiZGl2IiwgCiMgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBzY2FsZV9saW0sCiMgICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gIlBSR24iKSArCiMgICB0aGVtZV9taW5pbWFsKCkgKwojICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkgKwojICAgbGFicyh0aXRsZSA9ICJNb2RlIDQ6IG91dGVyIHByb2R1Y3QgKiBzaW5ndWxhciB2YWx1ZSBtYXRyaXgiLAojICAgICAgICB4ID0gIml0ZW0iLAojICAgICAgICB5ID0gInByb3BlcnR5IikKCmdfYWN0dWFsIDwtIGdncGxvdChkYXRhLmZyYW1lKGRfYmFzZV9tZWFuKSAlPiUKICAgICAgICAgICAgICAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQogICAgICAgICAgICAgICAgICAgICBnYXRoZXIoaXRlbSwgdmFsdWUsIC1wcm9wZXJ0eSkgJT4lCiAgICAgICAgICAgICAgICAgICAgIG11dGF0ZShpdGVtID0gZmFjdG9yKGl0ZW0sIGxldmVscyA9IGl0ZW1fbmFtZXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gcHJvcGVydHlfbmFtZXMpKSwKICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gaXRlbSwgeSA9IHByb3BlcnR5LAogICAgICAgICAgICAgICAgICAgICAgICMgeCA9IHJlb3JkZXIoaXRlbSwgdmFsdWUpLCB5ID0gcmVvcmRlcihwcm9wZXJ0eSwgdmFsdWUpLAogICAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSB2YWx1ZSkpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZCh2YWx1ZSwgMiksIG5zbWFsbCA9IDIpKSwgc2l6ZSA9IDMpICsKICBzY2FsZV9maWxsX2Rpc3RpbGxlcih0eXBlID0gImRpdiIsIAogICAgICAgICAgICAgICAgICAgICAgICMgbGltaXRzID0gc2NhbGVfbGltLAogICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoLTEsIDEpLAogICAgICAgICAgICAgICAgICAgICAgIHBhbGV0dGUgPSAiUFJHbiIpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpICsKICBsYWJzKHRpdGxlID0gIkFjdHVhbCBkYXRhIiwKICAgICAgIHggPSAiaXRlbSIsCiAgICAgICB5ID0gInByb3BlcnR5IikKCmdfbGluY29tYiA8LSBnZ3Bsb3QoZGF0YS5mcmFtZShtX3N1bSkgJT4lCiAgICAgICAgICAgICAgICAgICAgICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiAgICAgICAgICAgICAgICAgICAgICBnYXRoZXIoaXRlbSwgdmFsdWUsIC1wcm9wZXJ0eSkgJT4lCiAgICAgICAgICAgICAgICAgICAgICBtdXRhdGUoaXRlbSA9IGdzdWIoIlgiLCAiIiwgaXRlbSkpICU+JQogICAgICAgICAgICAgICAgICAgICAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIGl0ZW0pLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKICAgICAgICAgICAgICAgICAgICAgIG11dGF0ZShpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IGl0ZW1fbmFtZXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gZmFjdG9yKHByb3BlcnR5LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBwcm9wZXJ0eV9uYW1lcykpLAogICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gaXRlbSwgeSA9IHByb3BlcnR5LAogICAgICAgICAgICAgICAgICAgICAgICAjIHggPSByZW9yZGVyKGl0ZW0sIHZhbHVlKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICMgeSA9IHJlb3JkZXIocHJvcGVydHksIHZhbHVlKSwKICAgICAgICAgICAgICAgICAgICAgICAgZmlsbCA9IHZhbHVlKSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gZm9ybWF0KHJvdW5kKHZhbHVlLCAyKSwgbnNtYWxsID0gMikpLCBzaXplID0gMykgKwogIHNjYWxlX2ZpbGxfZGlzdGlsbGVyKHR5cGUgPSAiZGl2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgIyBsaW1pdHMgPSBzY2FsZV9saW0sCiAgICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYygtMSwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJQUkduIikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSkgKwogIGxhYnModGl0bGUgPSAiTGluZWFyIGNvbWJpbmF0aW9uIG9mIGFsbCBtb2RlcyIsCiAgICAgICB4ID0gIml0ZW0iLAogICAgICAgeSA9ICJwcm9wZXJ0eSIpCgpnX2RpZmYgPC0gZ2dwbG90KGRhdGEuZnJhbWUobV9kaWZmKSAlPiUKICAgICAgICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKICAgICAgICAgICAgICAgICAgIGdhdGhlcihpdGVtLCB2YWx1ZSwgLXByb3BlcnR5KSAlPiUKICAgICAgICAgICAgICAgICAgIG11dGF0ZShpdGVtID0gZ3N1YigiWCIsICIiLCBpdGVtKSkgJT4lCiAgICAgICAgICAgICAgICAgICBtdXRhdGVfYXQodmFycyhwcm9wZXJ0eSwgaXRlbSksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bnMoLiAlPiUgZmFjdG9yICU+JSBhcy5udW1lcmljKSkgJT4lCiAgICAgICAgICAgICAgICAgICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSwKICAgICAgICAgICAgICAgICBhZXMoeCA9IGl0ZW0sIHkgPSBwcm9wZXJ0eSwKICAgICAgICAgICAgICAgICAgICAgIyB4ID0gcmVvcmRlcihpdGVtLCB2YWx1ZSksIHkgPSByZW9yZGVyKHByb3BlcnR5LCB2YWx1ZSksCiAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSB2YWx1ZSkpICsgCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBmb3JtYXQocm91bmQodmFsdWUsIDIpLCBuc21hbGwgPSAyKSksIHNpemUgPSAzKSArCiAgc2NhbGVfZmlsbF9kaXN0aWxsZXIodHlwZSA9ICJkaXYiLCAKICAgICAgICAgICAgICAgICAgICAgICAjIGxpbWl0cyA9IHNjYWxlX2xpbSwKICAgICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKC0xLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICBwYWxldHRlID0gIlBSR24iKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICJEaWZmZXJlbmNlOiBkYXRhIC0gbGluZWFyIGNvbWJpbmF0aW9uIG9mIG1vZGVzIiwKICAgICAgIHggPSAiaXRlbSIsCiAgICAgICB5ID0gInByb3BlcnR5IikKCmNvd3Bsb3Q6OnBsb3RfZ3JpZChnX2FjdHVhbCwgZ19saW5jb21iLCBnX2RpZmYsIG5jb2wgPSAxKQpgYGAKCmBgYHtyfQojIFJFR1JFU1NJT04gLS0tLS0KCiMgdHVybiBldmVyeXRoaW5nIGludG8gdmVjdG9ycwojIGRhdGEKZF9iYXNlX3ZlYyA8LSBkX2Jhc2VfbWVhbiAlPiUgCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQogIGdhdGhlcihpdGVtLCBtZWFuLCAtcHJvcGVydHkpICU+JQogIG11dGF0ZShpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IGl0ZW1fbmFtZXMpLAogICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSAlPiUKICBhcnJhbmdlKGl0ZW0sIHByb3BlcnR5KSAlPiUKICBzZWxlY3QobWVhbikKCiMgbW9kZV8xCm1vZGVfMV92ZWMgPC0gb3V0ZXIodV9vbGRbLDFdLCB2X29sZFssMV0pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiAgZ2F0aGVyKGl0ZW0sIHZhbHVlLCAtcHJvcGVydHkpICU+JQogIG11dGF0ZShpdGVtID0gZ3N1YigiWCIsICIiLCBpdGVtKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIGl0ZW0pLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSkgJT4lCiAgYXJyYW5nZShpdGVtLCBwcm9wZXJ0eSkgJT4lCiAgc2VsZWN0KHZhbHVlKSAlPiUKICByZW5hbWUobW9kZV8xID0gdmFsdWUpCgojIG1vZGVfMgptb2RlXzJfdmVjIDwtIG91dGVyKHVfb2xkWywyXSwgdl9vbGRbLDJdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQogIGdhdGhlcihpdGVtLCB2YWx1ZSwgLXByb3BlcnR5KSAlPiUKICBtdXRhdGUoaXRlbSA9IGdzdWIoIlgiLCAiIiwgaXRlbSkpICU+JQogIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBpdGVtKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgbXV0YXRlKGl0ZW0gPSBmYWN0b3IoaXRlbSwgbGFiZWxzID0gaXRlbV9uYW1lcyksCiAgICAgICAgIHByb3BlcnR5ID0gZmFjdG9yKHByb3BlcnR5LCBsYWJlbHMgPSBwcm9wZXJ0eV9uYW1lcykpICU+JQogIGFycmFuZ2UoaXRlbSwgcHJvcGVydHkpICU+JQogIHNlbGVjdCh2YWx1ZSkgJT4lCiAgcmVuYW1lKG1vZGVfMiA9IHZhbHVlKQoKIyBtb2RlXzMKbW9kZV8zX3ZlYyA8LSBvdXRlcih1X29sZFssM10sIHZfb2xkWywzXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKICBnYXRoZXIoaXRlbSwgdmFsdWUsIC1wcm9wZXJ0eSkgJT4lCiAgbXV0YXRlKGl0ZW0gPSBnc3ViKCJYIiwgIiIsIGl0ZW0pKSAlPiUKICBtdXRhdGVfYXQodmFycyhwcm9wZXJ0eSwgaXRlbSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQogIG11dGF0ZShpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IGl0ZW1fbmFtZXMpLAogICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSAlPiUKICBhcnJhbmdlKGl0ZW0sIHByb3BlcnR5KSAlPiUKICBzZWxlY3QodmFsdWUpICU+JQogIHJlbmFtZShtb2RlXzMgPSB2YWx1ZSkKCiMgbW9kZV80Cm1vZGVfNF92ZWMgPC0gb3V0ZXIodV9vbGRbLDRdLCB2X29sZFssNF0pICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiAgZ2F0aGVyKGl0ZW0sIHZhbHVlLCAtcHJvcGVydHkpICU+JQogIG11dGF0ZShpdGVtID0gZ3N1YigiWCIsICIiLCBpdGVtKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIGl0ZW0pLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKICBtdXRhdGUoaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSwKICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSkgJT4lCiAgYXJyYW5nZShpdGVtLCBwcm9wZXJ0eSkgJT4lCiAgc2VsZWN0KHZhbHVlKSAlPiUKICByZW5hbWUobW9kZV80ID0gdmFsdWUpCgojIG1vZGVfNQptb2RlXzVfdmVjIDwtIG91dGVyKHVfb2xkWyw1XSwgdl9vbGRbLDVdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQogIGdhdGhlcihpdGVtLCB2YWx1ZSwgLXByb3BlcnR5KSAlPiUKICBtdXRhdGUoaXRlbSA9IGdzdWIoIlgiLCAiIiwgaXRlbSkpICU+JQogIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBpdGVtKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgbXV0YXRlKGl0ZW0gPSBmYWN0b3IoaXRlbSwgbGFiZWxzID0gaXRlbV9uYW1lcyksCiAgICAgICAgIHByb3BlcnR5ID0gZmFjdG9yKHByb3BlcnR5LCBsYWJlbHMgPSBwcm9wZXJ0eV9uYW1lcykpICU+JQogIGFycmFuZ2UoaXRlbSwgcHJvcGVydHkpICU+JQogIHNlbGVjdCh2YWx1ZSkgJT4lCiAgcmVuYW1lKG1vZGVfNSA9IHZhbHVlKQoKIyBtb2RlXzYKbW9kZV82X3ZlYyA8LSBvdXRlcih1X29sZFssNl0sIHZfb2xkWyw2XSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigicHJvcGVydHkiKSAlPiUKICBnYXRoZXIoaXRlbSwgdmFsdWUsIC1wcm9wZXJ0eSkgJT4lCiAgbXV0YXRlKGl0ZW0gPSBnc3ViKCJYIiwgIiIsIGl0ZW0pKSAlPiUKICBtdXRhdGVfYXQodmFycyhwcm9wZXJ0eSwgaXRlbSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQogIG11dGF0ZShpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IGl0ZW1fbmFtZXMpLAogICAgICAgICBwcm9wZXJ0eSA9IGZhY3Rvcihwcm9wZXJ0eSwgbGFiZWxzID0gcHJvcGVydHlfbmFtZXMpKSAlPiUKICBhcnJhbmdlKGl0ZW0sIHByb3BlcnR5KSAlPiUKICBzZWxlY3QodmFsdWUpICU+JQogIHJlbmFtZShtb2RlXzYgPSB2YWx1ZSkKCiMgY29tYmluZQpkX3JlZyA8LSBjYmluZChkX2Jhc2VfdmVjLCAKICAgICAgICAgICAgICAgbW9kZV8xX3ZlYywgbW9kZV8yX3ZlYywgbW9kZV8zX3ZlYywgbW9kZV80X3ZlYywKICAgICAgICAgICAgICAgbW9kZV81X3ZlYywgbW9kZV82X3ZlYykKCiMgcmVncmVzc2lvbgpyMSA8LSBsbShtZWFuIH4gbW9kZV8xLCBkX3JlZyk7ICNzdW1tYXJ5KHIxKQojIHIyIDwtIGxtKG1lYW4gfiBtb2RlXzIsIGRfcmVnKTsgI3N1bW1hcnkocjIpCiMgcjMgPC0gbG0obWVhbiB+IG1vZGVfMywgZF9yZWcpOyAjc3VtbWFyeShyMykKIyByNCA8LSBsbShtZWFuIH4gbW9kZV80LCBkX3JlZyk7ICNzdW1tYXJ5KHI0KQpyMTIgPC0gbG0obWVhbiB+IG1vZGVfMSArIG1vZGVfMiwgZF9yZWcpOyAjc3VtbWFyeShyMTIpCnIxMjMgPC0gbG0obWVhbiB+IG1vZGVfMSArIG1vZGVfMiArIG1vZGVfMywgZF9yZWcpOyAjc3VtbWFyeShyMTIzKQpyMTIzNCA8LSBsbShtZWFuIH4gbW9kZV8xICsgbW9kZV8yICsgbW9kZV8zICsgbW9kZV80LCBkX3JlZyk7ICNzdW1tYXJ5KHIxMjM0KQpyMTIzNDUgPC0gbG0obWVhbiB+IG1vZGVfMSArIG1vZGVfMiArIG1vZGVfMyArIG1vZGVfNCArIG1vZGVfNSwgZF9yZWcpOyAjc3VtbWFyeShyMTIzNDUpCiMgcjEyMzRfMCA8LSBsbShtZWFuIH4gMCArIG1vZGVfMSArIG1vZGVfMiArIG1vZGVfMyArIG1vZGVfNCwgZF9yZWcpOyBzdW1tYXJ5KHIxMjM0XzApCnIxMjM0NTYgPC0gbG0obWVhbiB+IG1vZGVfMSArIG1vZGVfMiArIG1vZGVfMyArIG1vZGVfNCArIG1vZGVfNSArIG1vZGVfNiwgCiAgICAgICAgICAgICAgZF9yZWcpOyBzdW1tYXJ5KHIxMjM0NTYpCmBgYAoKYGBge3J9CmFub3ZhKHIxLCByMTIsIHIxMjMsIHIxMjM0LCByMTIzNDUsIHIxMjM0NTYpCmBgYAoKYGBge3IsIHJlc3VsdHMgPSAiYXMuaXMifQpzdW1tYXJ5KHIxMjM0NTYpJGNvZWZmaWNpZW50cyAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwYXJhbWV0ZXIiKSAlPiUKICBtdXRhdGUoU1YgPSBjKE5BLCBzX29sZFsxOjZdKSkgJT4lCiAgcmVuYW1lKGJldGEgPSBFc3RpbWF0ZSwKICAgICAgICAgYmV0YV9zZSA9IFN0ZC4uRXJyb3IsCiAgICAgICAgIGJldGFfdCA9IHQudmFsdWUsCiAgICAgICAgIGJldGFfcCA9IFByLi4udC4uKSAlPiUKICBtdXRhdGUoc2lnbmlmID0gaWZlbHNlKGJldGFfcCA8IDAuMDAxLCAiKioqIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShiZXRhX3AgPCAwLjAxLCAiKioiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShiZXRhX3AgPCAwLjA1LCAiKiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuLnMuIikpKSkgJT4lCiAgZmlsdGVyKGdyZXBsKCJtb2RlIiwgcGFyYW1ldGVyKSkgJT4lCiAgc2VsZWN0KHBhcmFtZXRlciwgU1YsIHN0YXJ0c193aXRoKCJiZXRhIiksIHNpZ25pZikgJT4lCiAga25pdHI6OmthYmxlKGRpZ2l0cyA9IDMpCmBgYAoKIyBQbG90dGluZyBwcm9wZXJ0aWVzIGluIDJEIHNwYWNlcwoKYGBge3IsIGZpZy53aWR0aCA9IDYsIGZpZy5hc3AgPSAwLjZ9CmRhdGEuZnJhbWUodV9vbGQpICU+JQogIG11dGF0ZShYMSA9IFgxICogc19vbGRbMV0sCiAgICAgICAgIFgyID0gWDIgKiBzX29sZFsyXSwKICAgICAgICAgWDMgPSBYMyAqIHNfb2xkWzNdLAogICAgICAgICBYNCA9IFg0ICogc19vbGRbNF0sCiAgICAgICAgIFg1ID0gWDUgKiBzX29sZFs1XSwKICAgICAgICAgWDYgPSBYNiAqIHNfb2xkWzZdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiAgYXJyYW5nZShkZXNjKGFicyhYMSkpLCBkZXNjKGFicyhYMikpLCAKICAgICAgICAgIGRlc2MoYWJzKFgzKSksIGRlc2MoYWJzKFg0KSksCiAgICAgICAgICBkZXNjKGFicyhYNSkpLCBkZXNjKGFicyhYNikpKSAlPiUKICBtdXRhdGUob3JkZXIgPSAxOm5yb3coLikpICU+JQogIGdhdGhlcihtb2RlLCB2YWx1ZSwgLXByb3BlcnR5LCAtb3JkZXIpICU+JQogIG11dGF0ZShtb2RlID0gZ3N1YigiWCIsICIiLCBtb2RlKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIG1vZGUpLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKICBtdXRhdGUobW9kZSA9IGZhY3Rvcihtb2RlLCBsYWJlbHMgPSBjKCJtb2RlXzEiLCAibW9kZV8yIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV8zIiwgIm1vZGVfNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV81IiwgIm1vZGVfNiIpKSwKICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9mYWN0b3JzICU+JSBzZWxlY3QocHJvcGVydHksIGZhY3RvcikpICU+JQogIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZV8xLCB5ID0gbW9kZV8yLCBjb2xvciA9IGZhY3RvciwgCiAgICAgICAgICAgICBsYWJlbCA9IHByb3BlcnR5KSkgKwogIGdlb21fdGV4dCgpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJTZXQxIikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgY29vcmRfZml4ZWQoKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IAogICAgICAgICAgICAgICAgICAgICAgIHNlcSgtMTAsIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9IHJvdW5kKChzY2FsZV9saW1bMl0gLSBzY2FsZV9saW1bMV0pLzQsIDIpKSwKICAgICAgICAgICAgICAgICAgICAgZXhwYW5kID0gYygwLjI1LCAwLjI1KSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSAKICAgICAgICAgICAgICAgICAgICAgICBzZXEoLTEwLCAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSByb3VuZCgoc2NhbGVfbGltWzJdIC0gc2NhbGVfbGltWzFdKS80LCAyKSkpICsgIGxhYnModGl0bGUgPSAicHJvcGVydGllcyBpbiAyRCBzcGFjZTogbW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJtb2RlIDEiLCB5ID0gIm1vZGUgMiIpCgpkYXRhLmZyYW1lKHVfb2xkKSAlPiUKICBtdXRhdGUoWDEgPSBYMSAqIHNfb2xkWzFdLAogICAgICAgICBYMiA9IFgyICogc19vbGRbMl0sCiAgICAgICAgIFgzID0gWDMgKiBzX29sZFszXSwKICAgICAgICAgWDQgPSBYNCAqIHNfb2xkWzRdLAogICAgICAgICBYNSA9IFg1ICogc19vbGRbNV0sCiAgICAgICAgIFg2ID0gWDYgKiBzX29sZFs2XSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwcm9wZXJ0eSIpICU+JQogIGFycmFuZ2UoZGVzYyhhYnMoWDEpKSwgZGVzYyhhYnMoWDIpKSwgCiAgICAgICAgICBkZXNjKGFicyhYMykpLCBkZXNjKGFicyhYNCkpLAogICAgICAgICAgZGVzYyhhYnMoWDUpKSwgZGVzYyhhYnMoWDYpKSkgJT4lCiAgbXV0YXRlKG9yZGVyID0gMTpucm93KC4pKSAlPiUKICBnYXRoZXIobW9kZSwgdmFsdWUsIC1wcm9wZXJ0eSwgLW9yZGVyKSAlPiUKICBtdXRhdGUobW9kZSA9IGdzdWIoIlgiLCAiIiwgbW9kZSkpICU+JQogIG11dGF0ZV9hdCh2YXJzKHByb3BlcnR5LCBtb2RlKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgbXV0YXRlKG1vZGUgPSBmYWN0b3IobW9kZSwgbGFiZWxzID0gYygibW9kZV8xIiwgIm1vZGVfMiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfMyIsICJtb2RlXzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfNSIsICJtb2RlXzYiKSksCiAgICAgICAgIHByb3BlcnR5ID0gZmFjdG9yKHByb3BlcnR5LCBsYWJlbHMgPSBwcm9wZXJ0eV9uYW1lcykpICU+JQogIGZ1bGxfam9pbihlZmFfZmFjdG9ycyAlPiUgc2VsZWN0KHByb3BlcnR5LCBmYWN0b3IpKSAlPiUKICBzcHJlYWQobW9kZSwgdmFsdWUpICU+JQogIGdncGxvdChhZXMoeCA9IG1vZGVfMSwgeSA9IG1vZGVfMywgY29sb3IgPSBmYWN0b3IsIGxhYmVsID0gcHJvcGVydHkpKSArCiAgZ2VvbV90ZXh0KCkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDEiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBjb29yZF9maXhlZCgpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gCiAgICAgICAgICAgICAgICAgICAgICAgc2VxKC0xMCwgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gcm91bmQoKHNjYWxlX2xpbVsyXSAtIHNjYWxlX2xpbVsxXSkvNCwgMikpLAogICAgICAgICAgICAgICAgICAgICBleHBhbmQgPSBjKDAuMjUsIDAuMjUpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IAogICAgICAgICAgICAgICAgICAgICAgIHNlcSgtMTAsIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9IHJvdW5kKChzY2FsZV9saW1bMl0gLSBzY2FsZV9saW1bMV0pLzQsIDIpKSkgKyAgbGFicyh0aXRsZSA9ICJwcm9wZXJ0aWVzIGluIDJEIHNwYWNlOiBtb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIm1vZGUgMSIsIHkgPSAibW9kZSAzIikKCmRhdGEuZnJhbWUodV9vbGQpICU+JQogIG11dGF0ZShYMSA9IFgxICogc19vbGRbMV0sCiAgICAgICAgIFgyID0gWDIgKiBzX29sZFsyXSwKICAgICAgICAgWDMgPSBYMyAqIHNfb2xkWzNdLAogICAgICAgICBYNCA9IFg0ICogc19vbGRbNF0sCiAgICAgICAgIFg1ID0gWDUgKiBzX29sZFs1XSwKICAgICAgICAgWDYgPSBYNiAqIHNfb2xkWzZdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInByb3BlcnR5IikgJT4lCiAgYXJyYW5nZShkZXNjKGFicyhYMSkpLCBkZXNjKGFicyhYMikpLCAKICAgICAgICAgIGRlc2MoYWJzKFgzKSksIGRlc2MoYWJzKFg0KSksCiAgICAgICAgICBkZXNjKGFicyhYNSkpLCBkZXNjKGFicyhYNikpKSAlPiUKICBtdXRhdGUob3JkZXIgPSAxOm5yb3coLikpICU+JQogIGdhdGhlcihtb2RlLCB2YWx1ZSwgLXByb3BlcnR5LCAtb3JkZXIpICU+JQogIG11dGF0ZShtb2RlID0gZ3N1YigiWCIsICIiLCBtb2RlKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMocHJvcGVydHksIG1vZGUpLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKICBtdXRhdGUobW9kZSA9IGZhY3Rvcihtb2RlLCBsYWJlbHMgPSBjKCJtb2RlXzEiLCAibW9kZV8yIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV8zIiwgIm1vZGVfNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV81IiwgIm1vZGVfNiIpKSwKICAgICAgICAgcHJvcGVydHkgPSBmYWN0b3IocHJvcGVydHksIGxhYmVscyA9IHByb3BlcnR5X25hbWVzKSkgJT4lCiAgZnVsbF9qb2luKGVmYV9mYWN0b3JzICU+JSBzZWxlY3QocHJvcGVydHksIGZhY3RvcikpICU+JQogIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZV8yLCB5ID0gbW9kZV8zLCBjb2xvciA9IGZhY3RvciwgbGFiZWwgPSBwcm9wZXJ0eSkpICsKICBnZW9tX3RleHQoKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGNvb3JkX2ZpeGVkKCkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSAKICAgICAgICAgICAgICAgICAgICAgICBzZXEoLTEwLCAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSByb3VuZCgoc2NhbGVfbGltWzJdIC0gc2NhbGVfbGltWzFdKS80LCAyKSksCiAgICAgICAgICAgICAgICAgICAgIGV4cGFuZCA9IGMoMC4yNSwgMC4yNSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gCiAgICAgICAgICAgICAgICAgICAgICAgc2VxKC0xMCwgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gcm91bmQoKHNjYWxlX2xpbVsyXSAtIHNjYWxlX2xpbVsxXSkvNCwgMikpKSArCiAgbGFicyh0aXRsZSA9ICJwcm9wZXJ0aWVzIGluIDJEIHNwYWNlOiBtb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIm1vZGUgMiIsIHkgPSAibW9kZSAzIikKYGBgCgoKCiMgUGxvdHRpbmcgaXRlbXMgaW4gMkQgc3BhY2VzCgpgYGB7ciwgZmlnLndpZHRoID0gNiwgZmlnLmFzcCA9IDAuNn0KZGF0YS5mcmFtZSh2X29sZCkgJT4lCiAgbXV0YXRlKFgxID0gWDEgKiBzX29sZFsxXSwKICAgICAgICAgWDIgPSBYMiAqIHNfb2xkWzJdLAogICAgICAgICBYMyA9IFgzICogc19vbGRbM10sCiAgICAgICAgIFg0ID0gWDQgKiBzX29sZFs0XSwKICAgICAgICAgWDUgPSBYNSAqIHNfb2xkWzVdLAogICAgICAgICBYNiA9IFg2ICogc19vbGRbNl0pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiaXRlbSIpICU+JQogIGFycmFuZ2UoZGVzYyhhYnMoWDEpKSwgZGVzYyhhYnMoWDIpKSwgCiAgICAgICAgICBkZXNjKGFicyhYMykpLCBkZXNjKGFicyhYNCkpLAogICAgICAgICAgZGVzYyhhYnMoWDUpKSwgZGVzYyhhYnMoWDYpKSkgJT4lCiAgbXV0YXRlKG9yZGVyID0gMTpucm93KC4pKSAlPiUKICBnYXRoZXIobW9kZSwgdmFsdWUsIC1pdGVtLCAtb3JkZXIpICU+JQogIG11dGF0ZShtb2RlID0gZ3N1YigiWCIsICIiLCBtb2RlKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMoaXRlbSwgbW9kZSksIGZ1bnMoYXMubnVtZXJpYykpICU+JQogIG11dGF0ZShtb2RlID0gZmFjdG9yKG1vZGUsIGxhYmVscyA9IGMoIm1vZGVfMSIsICJtb2RlXzIiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlXzMiLCAibW9kZV80IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlXzUiLCAibW9kZV82IikpLAogICAgICAgICBpdGVtID0gZmFjdG9yKGl0ZW0sIGxhYmVscyA9IGl0ZW1fbmFtZXMpKSAlPiUKICBzcHJlYWQobW9kZSwgdmFsdWUpICU+JQogIGdncGxvdChhZXMoeCA9IG1vZGVfMSwgeSA9IG1vZGVfMiwgbGFiZWwgPSBpdGVtKSkgKwogIGdlb21fdGV4dCgpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGNvb3JkX2ZpeGVkKCkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSAKICAgICAgICAgICAgICAgICAgICAgICBzZXEoLTEwLCAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSByb3VuZCgoc2NhbGVfbGltWzJdIC0gc2NhbGVfbGltWzFdKS80LCAyKSksCiAgICAgICAgICAgICAgICAgICAgIGV4cGFuZCA9IGMoMC4yNSwgMC4yNSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gCiAgICAgICAgICAgICAgICAgICAgICAgc2VxKC0xMCwgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gcm91bmQoKHNjYWxlX2xpbVsyXSAtIHNjYWxlX2xpbVsxXSkvNCwgMikpKSArICBsYWJzKHRpdGxlID0gIml0ZW1zIGluIDJEIHNwYWNlOiBtb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIm1vZGUgMSIsIHkgPSAibW9kZSAyIikKCmRhdGEuZnJhbWUodl9vbGQpICU+JQogIG11dGF0ZShYMSA9IFgxICogc19vbGRbMV0sCiAgICAgICAgIFgyID0gWDIgKiBzX29sZFsyXSwKICAgICAgICAgWDMgPSBYMyAqIHNfb2xkWzNdLAogICAgICAgICBYNCA9IFg0ICogc19vbGRbNF0sCiAgICAgICAgIFg1ID0gWDUgKiBzX29sZFs1XSwKICAgICAgICAgWDYgPSBYNiAqIHNfb2xkWzZdKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oIml0ZW0iKSAlPiUKICBhcnJhbmdlKGRlc2MoYWJzKFgxKSksIGRlc2MoYWJzKFgyKSksIAogICAgICAgICAgZGVzYyhhYnMoWDMpKSwgZGVzYyhhYnMoWDQpKSwKICAgICAgICAgIGRlc2MoYWJzKFg1KSksIGRlc2MoYWJzKFg2KSkpICU+JQogIG11dGF0ZShvcmRlciA9IDE6bnJvdyguKSkgJT4lCiAgZ2F0aGVyKG1vZGUsIHZhbHVlLCAtaXRlbSwgLW9yZGVyKSAlPiUKICBtdXRhdGUobW9kZSA9IGdzdWIoIlgiLCAiIiwgbW9kZSkpICU+JQogIG11dGF0ZV9hdCh2YXJzKGl0ZW0sIG1vZGUpLCBmdW5zKGFzLm51bWVyaWMpKSAlPiUKICBtdXRhdGUobW9kZSA9IGZhY3Rvcihtb2RlLCBsYWJlbHMgPSBjKCJtb2RlXzEiLCAibW9kZV8yIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV8zIiwgIm1vZGVfNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZV81IiwgIm1vZGVfNiIpKSwKICAgICAgICAgaXRlbSA9IGZhY3RvcihpdGVtLCBsYWJlbHMgPSBpdGVtX25hbWVzKSkgJT4lCiAgc3ByZWFkKG1vZGUsIHZhbHVlKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb2RlXzEsIHkgPSBtb2RlXzMsIGxhYmVsID0gaXRlbSkpICsKICBnZW9tX3RleHQoKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBjb29yZF9maXhlZCgpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gCiAgICAgICAgICAgICAgICAgICAgICAgc2VxKC0xMCwgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gcm91bmQoKHNjYWxlX2xpbVsyXSAtIHNjYWxlX2xpbVsxXSkvNCwgMikpLAogICAgICAgICAgICAgICAgICAgICBleHBhbmQgPSBjKDAuMjUsIDAuMjUpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IAogICAgICAgICAgICAgICAgICAgICAgIHNlcSgtMTAsIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9IHJvdW5kKChzY2FsZV9saW1bMl0gLSBzY2FsZV9saW1bMV0pLzQsIDIpKSkgKyAgbGFicyh0aXRsZSA9ICJpdGVtcyBpbiAyRCBzcGFjZTogbW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJtb2RlIDEiLCB5ID0gIm1vZGUgMyIpCgpkYXRhLmZyYW1lKHZfb2xkKSAlPiUKICBtdXRhdGUoWDEgPSBYMSAqIHNfb2xkWzFdLAogICAgICAgICBYMiA9IFgyICogc19vbGRbMl0sCiAgICAgICAgIFgzID0gWDMgKiBzX29sZFszXSwKICAgICAgICAgWDQgPSBYNCAqIHNfb2xkWzRdLAogICAgICAgICBYNSA9IFg1ICogc19vbGRbNV0sCiAgICAgICAgIFg2ID0gWDYgKiBzX29sZFs2XSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJpdGVtIikgJT4lCiAgYXJyYW5nZShkZXNjKGFicyhYMSkpLCBkZXNjKGFicyhYMikpLCAKICAgICAgICAgIGRlc2MoYWJzKFgzKSksIGRlc2MoYWJzKFg0KSksCiAgICAgICAgICBkZXNjKGFicyhYNSkpLCBkZXNjKGFicyhYNikpKSAlPiUKICBtdXRhdGUob3JkZXIgPSAxOm5yb3coLikpICU+JQogIGdhdGhlcihtb2RlLCB2YWx1ZSwgLWl0ZW0sIC1vcmRlcikgJT4lCiAgbXV0YXRlKG1vZGUgPSBnc3ViKCJYIiwgIiIsIG1vZGUpKSAlPiUKICBtdXRhdGVfYXQodmFycyhpdGVtLCBtb2RlKSwgZnVucyhhcy5udW1lcmljKSkgJT4lCiAgbXV0YXRlKG1vZGUgPSBmYWN0b3IobW9kZSwgbGFiZWxzID0gYygibW9kZV8xIiwgIm1vZGVfMiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfMyIsICJtb2RlXzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGVfNSIsICJtb2RlXzYiKSksCiAgICAgICAgIGl0ZW0gPSBmYWN0b3IoaXRlbSwgbGFiZWxzID0gaXRlbV9uYW1lcykpICU+JQogIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZV8yLCB5ID0gbW9kZV8zLCBsYWJlbCA9IGl0ZW0pKSArCiAgZ2VvbV90ZXh0KCkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgY29vcmRfZml4ZWQoKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IAogICAgICAgICAgICAgICAgICAgICAgIHNlcSgtMTAsIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9IHJvdW5kKChzY2FsZV9saW1bMl0gLSBzY2FsZV9saW1bMV0pLzQsIDIpKSwKICAgICAgICAgICAgICAgICAgICAgZXhwYW5kID0gYygwLjI1LCAwLjI1KSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSAKICAgICAgICAgICAgICAgICAgICAgICBzZXEoLTEwLCAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSByb3VuZCgoc2NhbGVfbGltWzJdIC0gc2NhbGVfbGltWzFdKS80LCAyKSkpICsKICBsYWJzKHRpdGxlID0gIml0ZW1zIGluIDJEIHNwYWNlOiBtb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIm1vZGUgMiIsIHkgPSAibW9kZSAzIikKYGBgCgo=